package com.shop.cereshop.app.service.buyer;

import com.shop.cereshop.app.page.buyer.CollectAndLikeNumber;
import com.shop.cereshop.app.page.buyer.UserDetailVO;
import com.shop.cereshop.app.page.recommend.RecommendPageVO;
import com.shop.cereshop.app.param.buyer.BrowseHistory;
import com.shop.cereshop.app.param.buyer.BuyerRelationShipVO;
import com.shop.cereshop.app.param.buyer.CereBuyerRecord;
import com.shop.cereshop.app.param.recommend.LikeOrCollectReadParam;
import com.shop.cereshop.commons.domain.buyer.CereBuyerRelationship;
import com.shop.cereshop.commons.domain.common.Page;
import com.shop.cereshop.commons.domain.common.PageParam;
import com.shop.cereshop.commons.exception.CoBusinessException;

import java.util.List;

public interface CereBuyerRelationShipService {
    void save(BuyerRelationShipVO buyerRelationShipVO, Long buyerUserId);


    void updateBuyerRelationShip(BuyerRelationShipVO buyerRelationShipVO, Long buyerUserId);


    UserDetailVO getUserInfo(Long buyerUserId, String visitedUserId) throws CoBusinessException;

    void addVisited(CereBuyerRecord cereBuyerRecord);

    Page getVisitedList(PageParam param, Long buyerUserId) throws CoBusinessException;


    CereBuyerRelationship selectBuyerRelationShip(Long bUserId, Long publishPostUserId);

    Page selectHistoryPetSearch(PageParam param, Long buyerUserId);

    Integer deletePetSearch(List<Long> searchPetIds, Long buyerUserId);

    void addPetSearch(String searchContent, Long buyerUserId);

    Page getCollect(PageParam param, Long buyerUserId);

    CollectAndLikeNumber likeAndCollectCount(Long buyerUserId);

    Page likeAndCollectList(PageParam param, Long buyerUserId);

    boolean setReadLikeAndCollect(Long buyerUserId, LikeOrCollectReadParam readParam);

    Page<RecommendPageVO> userBrowseHistory(BrowseHistory param) throws CoBusinessException;

    Integer deleteUserBrowseHistory(Integer type, Long buyerUserId) throws CoBusinessException;

    Integer deleteUserHistory(List<Long> userIds, Long buyerUserId);

    Integer deleteUserInfo(List<Long> recommendIds, Integer type, Long buyerUserId);


}
